package com.liming.coupon.client;

import com.liming.common.pojo.dto.coupon.AddCouponDTO;
import com.liming.common.pojo.dto.coupon.CouponPageQuery;
import com.liming.common.pojo.dto.coupon.UpdateCouponDTO;
import com.liming.common.pojo.vo.PageVO;
import com.liming.common.pojo.vo.coupon.openfeign.FeignCouponVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;

/**
 * 优惠券客户端 - 后台
 * @author liming
 * @date 2025/1/6
 */
@FeignClient(value = "coupon-service",contextId = "couponAdminClient", path = "/service/coupon_admin")
public interface CouponAdminClient {

    /**
     * 优惠券分页
     *
     * @param query 分页参数
     * @return 分页数据
     */
    @GetMapping
    PageVO<FeignCouponVO> page(@SpringQueryMap CouponPageQuery query);

    /**
     * 优惠券信息
     * @param id 优惠券ID
     * @return 优惠券信息
     */
    @GetMapping("{id}")
    FeignCouponVO get(@PathVariable Long id);

    /**
     * 新增优惠券
     * @param addCouponDTO 新增优惠券参数
     * @return 是否新增成功
     */
    @PostMapping
    Boolean add(@RequestBody AddCouponDTO addCouponDTO);

    /**
     * 更新优惠券可用状态
     * @param id 优惠券ID
     * @return 是否更新成功
     */
    @PutMapping("upd_available/{id}")
    Boolean updAvailable(@PathVariable Long id);

    /**
     * 更新优惠券
     * @param updateCouponDTO 更新优惠券参数
     * @return 是否更新成功
     */
    @PutMapping
    Boolean update(@RequestBody UpdateCouponDTO updateCouponDTO);

    /**
     * 删除优惠券
     * @param id 优惠券ID
     * @return 是否删除成功
     */
    @DeleteMapping("{id}")
    Boolean deleteCoupon(@PathVariable Long id);
}
